1. Field of the Invention
The present invention relates to data communication systems and, more particularly, to data communication systems using codes with coding boundaries that vary according to a dithering pattern.
2. Description of the Related Art
Pseudonoise (PN) codes, also known as pseudorandom codes, have good autocorrelation properties and are ideal for measuring the time-of-arrival of a signal, and hence, for use in ranging applications. A high coding gain is achieved when a receiver correlates the code, such as a PN code, for a long time. Accordingly, long PN codes have been used to provide high coding gain.
An example of using a long PN code is in the Global Positioning System (GPS). GPS is a satellite-based navigation system in which each satellite in the GPS constellation transmits a unique precision (P) code. Each P code is a very long PN code that has a period of one week, and hence, repeats only once per week. The P code provides for a high gain correlation signal that allows a receiver to acquire precise timing information, and hence, precise ranging information between the receiver and satellite. To acquire the P code signal a receiver must determine the phase of the received P code. However, because the P code is so long it is difficult for a receiver to determine its phase and therefore is difficult to acquire. If a receiver includes a very accurate clock, such as an atomic clock, it might stay synchronized with the transmitter's clock and could therefore generate a local reference P code that is nearly in-phase with the received P code. But this would require an expensive, complex and unwieldy receiver. Even with a very accurate and stable clock frequency, there is the problem of initially setting the correct time of day. This requires testing all of the code phases that span the range of the time uncertainty. Theoretically a receiver could include enough correlators to test each phase of the P code simultaneously to detect its phase, but in practice that solution would not be feasible because of the extremely large number of correlators required due to the length of the P code. A receiver also, theoretically, could use a practical number of correlators and test the possible phases of the P code sequentially, however, that would take a long time due to the length of the P code.
The GPS system uses another technique to acquire the P code. It uses a second signal, known as the course acquisition (C/A) signal, to determine initial timing information, then it uses that timing information to assist in detecting the phase of the P code. The C/A signal is a much shorter code of 1023 symbols and repeats approximately every millisecond. Accordingly, the C/A code can be detected quickly, either by using a bank of correlators to test each possible phase of the code simultaneously, or by testing the phases in sequence. However, the C/A code can provide timing only within one millisecond interval, because one such interval cannot be distinguished from another, and thus, by itself, cannot resolve all of the time uncertainty, which typically is a few seconds. But once a GPS receiver acquires the C/A signal it can determine enough timing information to limit the P code search to specific phases of the P code to speed its acquisition of the P code. However, using an ancillary code to help acquire a longer code, such as in the GPS system, requires that the transmitter generate and transmit two signals and that a receiver be able to receive and detect both signals.
Accordingly, there is a need to generate, transmit and receive a long code with good autocorrelation characteristics that can be acquired quickly using a feasible number of correlators and without requiring another signal that provides timing information.
A conventional spread-spectrum communications system, such as the GPS system, is shown in FIG. 1. The system of FIG. 1 includes a transmitter 1 and a receiver 9. The transmitter includes a PN code generator 2 that is controlled by a timing counter and both are driven based on a clock oscillator 4. The PN code generated by generator is modulated with a carrier signal via modulator 5 which is driven by carrier oscillator 6. Optionally, data can be superimposed onto the code and carrier by using a modulo 2 adder 7. The transmitter 1 transmits the modulated carrier via antenna 8 to a receiver 9.
Receiver 9 receives the transmitted signal via an antenna 10 that provides the received signal to a demodulator 11. The demodulator 11 is driven by a carrier oscillator 12, and produces two signals out-of-phase by 90°. Those signals are designated as in-phase (I) and quadrature(Q) signals. These two out-of-phase signals are provided to a group of parallel correlators 13. The parallel correlators can include as many, and even more, correlators as the number of phases of the code to be tested. For example, if the code length is 1023 symbols, or chips, the parallel correlators 13 can consist of 1023 correlators, with one correlator for each possible phase of the code. Multiple banks of the parallel correlators 13 can be used to correlate different signals, such as in this case where one bank correlates the I-signals and another bank correlates the Q-signals. The parallel correlators 13 are also provided with PN reference codes that correspond to the PN codes generated in the transmitter. PN code generator 14 generates the reference codes. The reference codes can be delayed to correspond to the various phases to be tested. Alternatively, the input signals, here the I and Q signals, can be delayed with various delays and correlated with a single PN code to test the different phases. The PN code generator 14 is driven by a local clock oscillator 15 and timing counters 16 which can produce the different timings for the PN reference codes. The local clock oscillator also drives timing counters 16.
Many different types of PN code generators can be used in spread-spectrum systems such as that shown in FIG. 1. One such conventional, simplified PN code generator is shown in detail in FIG. 2. The PN code generator of FIG. 2 includes a shift register 20 and a modulo-2 adder 21. In this example, the shift register is six bits long, although it can be longer or shorter as needed. The six flip-flops of shift register 20 are synchronously driven by a clock signal. Modulo-2 adder 21 adds the first and sixth bits of the shift register, and inserts the result into the first position of register 20. In this manner, a maximal-length PN sequence is produced.
The GPS receiver 9, shown in FIG. 1, requires two PN code generators. One of the PN generators, similar in concept to the generator shown in FIG. 2, generates the P code and another, also similar to that shown in FIG. 2, generates the CIA code. Although only one generator is shown in the FIG. 1 it will be understood that in the case of a long code system, such as GPS, two generators are used. Also, the receiver, in the threshold detection function 17, must be able to detect both the P and C/A codes. Accordingly, conventional spread-spectrum receivers, such as GPS receivers, suffer from the problems described above and are unable to detect a long code quickly and inexpensively without the aid of a second timing signal. Accordingly, there is a need for a receiver that can detect a long code with good autocorrelation properties, yet can acquire it quickly and inexpensively without the need for first detecting a second timing signal.